/*
 * Licensed to the Tai Ping Jin Ke
 *
 * Copyright (c) 2022 .
 * All rights reserved.
 * 项目名称：登录通-离线工程
 * 版权说明：本软件属太平金融科技服务(上海)有限公司所有，在未获得太平金融科技服务(上海)有限公司正式授权情况下，任何企业和个人，不能获取、阅读、安装、传播本软件涉及的任何受知识产权保护的内容。
 */
package com.taiping.dlt.webapi.offline.handler;

import com.taipingframework.boot.es.facade.ReactorIndexAdmin;
import com.taipingframework.boot.web.response.result.ApiResult;
import com.taipingframework.boot.web.response.status.ApiStatusEnum;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;

@Component
@RequiredArgsConstructor
public class OfflineHandler {

    private final ReactorIndexAdmin reactorIndexAdmin;

    /**
     * 索引是否存在
     */
    public Mono<ApiResult<Boolean>> exists(String indexName) {
        return reactorIndexAdmin.exists(indexName)
                .zipWith(ApiResult.<Boolean>create(),
                        (isExist, result) -> result.setStatus(ApiStatusEnum.SUCCESS)
                                .setResult(isExist)
                );
    }

    /**
     * 新增索引
     */
    public Mono<ApiResult<Boolean>> create(String indexName) {
        return reactorIndexAdmin.create(indexName, 1, 0)
                .zipWith(ApiResult.<Boolean>create(),
                        (isSuccess, result) -> result.setStatus(ApiStatusEnum.SUCCESS)
                                .setResult(isSuccess)
                );
    }

    /**
     * 删除索引
     */
    public Mono<ApiResult<Boolean>> delete(String indexName) {
        return reactorIndexAdmin.delete(indexName)
                .zipWith(ApiResult.<Boolean>create(),
                        (isSuccess, result) -> result.setStatus(ApiStatusEnum.SUCCESS)
                                .setResult(isSuccess)
                );
    }

}
